Eighteen Blog

题目描述

1
2
3
4
5
6
7
8
9
10
11
12
13
给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

示例:

输入: [1,2,3,null,5,null,4]
输出: [1, 3, 4]
解释:

1 <---
/ \
2 3 <---
\ \
5 4 <---

解题思路

对二叉树进行中右左顺序遍历,以此顺序,记录每个层级第一个被遍历的节点。

题解一:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @return {number[]}
*/
var rightSideView = function(root) {
let resArr = [];
let level = 0;
if (!root) {return []}
nodeFn(root, 0, resArr)
return resArr;
};

var nodeFn = function (node, level, resArr) {
if (resArr[level] === undefined) {
resArr[level] = node.val;
}
node.right && nodeFn(node.right, level + 1, resArr)
node.left && nodeFn(node.left, level + 1, resArr)
}

相当于二叉树的后序遍历的反序(中右左),只不过需要标记一下每个层级的第一个遍历节点即可。

 评论